package redis

import (
	"fmt"
	"github/kadycui/gids/conf"
	"github/kadycui/gids/middleware"
	"strconv"
	"time"

	"github.com/go-redis/redis"
)

var RDB *redis.Client

func RedisInit() {
	redisHost := conf.App.Redis.RedisHost
	redisPort := conf.App.Redis.RedisPort
	redisPassword := conf.App.Redis.RedisPassword
	redisDb, _ := strconv.Atoi(conf.App.Redis.RedisDb)

	// log.Info("Redis连接信息:", redisHost, "-", redisPort, "-", redisPassword, "-", redisDb)

	redisAddr := fmt.Sprintf("%s:%s", redisHost, redisPort)

	rdb := redis.NewClient(&redis.Options{
		//Addrs: []string{"redis1:6379", "redis2:6379", "redis3:6379"},  Redis 主节点地址列表
		Addr:        redisAddr,
		Password:    redisPassword,    // 如果没有设置密码，可以将这一行注释掉
		DB:          redisDb,          // 数据库索引，默认为 0
		PoolSize:    50,               // 连接池大小，默认为 10
		PoolTimeout: 30 * time.Second, // 连接超时时间，默认为 30 秒
		IdleTimeout: 5 * time.Minute,  // 空闲连接超时时间，默认为 5 分钟
	})

	// 使用连接池中的连接进行 Redis 操作
	pong, err := rdb.Ping().Result()
	if err != nil {
		middleware.Log.Error("redis连接异常" + err.Error())
	}
	middleware.Log.Info("Redis连接成功:", pong)
	RDB = rdb
	fmt.Println("Redis init OK ")
}
